.TH std::experimental::source_location::function_name 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::experimental::source_location::function_name \- std::experimental::source_location::function_name

.SH Synopsis
   constexpr const char* function_name() const noexcept;  (library fundamentals TS v2)

   Returns the name of the function associated with the position represented by this
   object, if any.

.SH Parameters

   \fI(none)\fP

.SH Return value

   If this object represents a position in a body of a function, returns an
   implementation-defined null-terminated byte string corresponding to the name of the
   function.

   Otherwise, an empty string is returned.

.SH Example

   The following example shows how it is possible to use the
   std::source_location::function_name() to print a name of a function, constructor,
   destructor, or overloaded operator().


// Run this code

 #include <experimental/source_location>
 #include <iostream>
 #include <string_view>

 inline void function_name(
     const std::string_view signature = "()",
     const std::experimental::source_location& location
         = std::experimental::source_location::current())
 {
     std::cout
         << location.function_name() // <- name of the caller!
         << signature
         << '\\n';
 }

 void foo() { function_name(); }

 struct S {
     S() { function_name(); }
     S(int) { function_name("(int)"); }
     S& operator=(S const&) { function_name("(const S&)"); return *this; }
     S& operator=(S&&) { function_name("(S&&)"); return *this; }
     ~S() { function_name(); }
 };

 int main()
 {
     foo();
     S p;
     S q{42};
     p = q;
     p = std::move(q);
 }

.SH Possible output:

 foo()
 S()
 S(int)
 operator=(const S&)
 operator=(S&&)
 ~S()
 ~S()

.SH See also

   line      return the line number represented by this object
             \fI(public member function)\fP
   column    return the column number represented by this object
             \fI(public member function)\fP
   file_name return the file name represented by this object
             \fI(public member function)\fP
   C++ documentation for
   Filename and line information
